草庐IT

c++ - 纯虚拟 friend 类

全部标签

c - 如何拦截Windows中的C库调用?

我有一个devilish-gui.exe、一个devilish.dll和一个来自已丢失的C代码库的devilish.h.devilish-gui仍然是客户使用的,它使用devilish.dlldevilish.h在30页的pdf中没有很好的记录:它公开了一些C函数,这些函数根据作为参数提供的结构中的值以非常不同的方式运行。现在,我必须使用devilish.dll来编写一个新的devilish-webservice。不,我不能重写它。文档几乎没用,但因为我有devilish-gui.exe,所以我想编写devilish.h的不同实现,以便它在文件中记录函数的调用和参数,而不是调用原始dl

java - 无法在 Eclipse 中调试简单的 Java 应用程序。无法连接到虚拟机。 AGENT_ERROR_TRANSPORT_INIT(197)

当我尝试在Eclipse中调试一个简单的应用程序时,我收到以下错误:无法连接到虚拟机com.sun.jdi.connect.TransportTimeoutException控制台为我提供了一个孤独的字符串:native方法中的fatalerror:JDWP未初始化传输,jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)我安装了JRE1.6、JRE1.7和JDK1.7。都试过了。我看过很多相同的主题,但没有一个答案能帮助我解决我的问题。他们在这里:1)禁用防火墙。没有帮助。我有最新的Avast版本。目前9.0。我对该软件有点怀疑,因为在更新我的Avas

c# - ReadMsgQueue 返回 ERROR_INVALID_PARAMETER

Windows嵌入式紧凑型。TryingtosendandreceiveamessagewithMsgQueue.看起来写入工作正常但读取给出了不正确的参数错误。知道缺少什么吗?我不确定创建队列函数。它说必须调用两次才能获得读取或写入句柄-对吗?intmain(){MSGQUEUEOPTIONSoptions={0};options.dwSize=sizeof(options);//options.dwFlags=MSGQUEUE_NOPRECOMMIT;options.dwMaxMessages=10000;//msgmaxforqueueoptions.cbMaxMessage=5

c - SetupDiGetDeviceRegistryProperty : "The data area passed to a system call is too small" error

我有一个使用SetupAPI在WindowsXP上枚举USB设备的代码:HDEVINFOhDevInfo=SetupDiGetClassDevs(&_DEVINTERFACE_USB_DEVICE,0,0,DIGCF_DEVICEINTERFACE|DIGCF_PRESENT);for(DWORDi=0;;++i){SP_DEVINFO_DATAdevInfo;devInfo.cbSize=sizeof(SP_DEVINFO_DATA);BOOLsucc=SetupDiEnumDeviceInfo(hDevInfo,i,&devInfo);if(GetLastError()==ERRO

c - 生成正确的 .DEF 文件以导出非静态函数和 GLOBALS

从aquestionaboutdetectingbadlinkagetoglobalsacrossdllboudaries开始,事实证明我需要修改PostgreSQL项目使用的.DEF文件生成器工具,以便它正确地为全局变量的.DEF条目发出DATA标记。问题我似乎无法使用Microsoft的工具找到一种方法来获得区分全局变量和函数的符号表列表,其中包括未在其定义站点初始化的全局变量。想法?断流方法该工具循环遍历dumpbin/symbols输出以生成.DEF文件。与我习惯的nm不同,dumpbin/symbols似乎不会为每个符号发出一个条目来指示符号类型-函数、已初始化变量、未初始化

c++ - 使用 ListView_HitTest 检查具有扩展样式 LVS_EX_FULLROWSELECT 的 LVHT_ONITEMSTATEICON 标志的虚拟 ListView 不需要的复选框行为

我正在使用一个虚拟的ListView控件,我正在尝试让复选框正常工作。在NM_CLICK中,我的代码将点击点从NM_LISTVIEW结构复制到LVHITTESTINFOhitInfo.pt。然后我将hitInfo传递给ListView_HitTest并且如果hitInfo.flags&LVHT_ONITEMSTATICON->ToggleCheckBox...在我将扩展样式LVS_EX_FULLROWSELECT添加到ListView之前,我的代码运行良好(仅在复选框本身被单击时选中/取消选中)。现在,如果我选择一行(在项目的任何一点),它将切换复选框。有什么方法可以在不删除LVS_E

c++ - crt0 是否加载 msvcrt.dll?

我正在尝试弄清楚标准C函数(如printf())如何在Windows环境中加载到内存中。我知道crt0.obj准备堆栈,调用intmain(intargc,char**argv)然后使用main返回的退出代码退出进程。我还听说C标准函数位于一个名为msvcrt.dll的共享库中。我想知道crt0是否也加载msvcrt.dll或者是否有一个msvcrt.lib也由编译器自动链接。谢谢你,对不起我的英语:) 最佳答案 总会有一个运行时环境,例如msvcr80.dll(适用于Windows变体),在您安装环境时加载,不管它是什么,即MSV

c++ - Windows 虚拟内存和内核模式

我知道在32位架构中,内核模式虚拟内存映射在0x80000000和0xFFFFFFFF之间。它包含一些结构如EPROCESS,ETHREAD...等等,还有当前进程的页面目录和表。虽然尝试获取某个函数的虚拟地址是ntoskrnl让我们说“nt!NtReadFile”,但我发现它映射到内核虚拟地址0x89421130中。我尝试用随机指令在RET之后修补一些nop,当切换到另一个进程上下文时,我发现我输入的指令仍然存在。这是否意味着加载Ntoskrnl的虚拟内存在每个进程虚拟地址空间中保持不变?谢谢。 最佳答案 Doesthatmean

windows - Windows 8 特定多媒体键的虚拟键码是什么?

我有一个MicrosoftSculptErgonomicDesktop它有额外的功能键。另请参阅我关于SuperUser的问题,"Whatarethefunctionsofthemultimediakeys?".有一些用于charmbar功能的键,有些我还没有识别。由于Windows7没有这些功能,我想我可以编写一个应用程序来使用这些键做一些有用的事情。这些键的虚拟键码是什么? 最佳答案 我使用一个简单的测试应用程序自行解决了这个问题:F5=Search=1691132=VK_SHIFT+VK_LWIN+VK_F21F6=Share

c - 内核如何知道哪些驱动程序属于哪些外设?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。这个问题似乎不是关于aspecificprogrammingproblem,asoftwarealgorithm,orsoftwaretoolsprimarilyusedbyprogrammers的.如果您认为这个问题是关于anotherStackExchangesite的主题,您可以发表评论,说明问题可能在哪里得到解答。关闭8年前。Improvethisquestion当内核需要向某个外设发送输出时,它如何知道使用哪个驱动程序?